
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EBAS_SP_SIKKERHED_SIGNON_BRUGER]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[EBAS_SP_SIKKERHED_SIGNON_BRUGER]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

CREATE PROCEDURE [DBO].[EBAS_SP_SIKKERHED_SIGNON_BRUGER] 
	@bruger varchar(255),
	@adgangskode varchar(255), 	
	@adminOption int = 0,
	@session varchar(255) OUTPUT
WITH ENCRYPTION	
AS
	DECLARE
		@internSession uniqueidentifier,
		@brugerGuid uniqueidentifier,
		@harRettighed int,
		@objektType uniqueidentifier

	SET NOCOUNT ON
	
	--UPDATE EBAS_SIKKERHED_BRUGER SET ADGANGSKODE_HASH = @adgangskode
	--WHERE ADGANGSKODE_HASH IS NULL OR LTRIM(RTRIM(ADGANGSKODE_HASH)) = ''	
	--AND BRUGERNAVN = @bruger 
	
	SET @brugerGuid = (	SELECT TOP 1 GUID FROM EBAS_SIKKERHED_BRUGER 
				WHERE BRUGERNAVN = @bruger 
				--AND ADGANGSKODE_HASH = @adgangskode
				AND DEAKTIVERET = 0
				AND (SLUT_DATO > getDate() OR SLUT_DATO IS NULL) )

	SET @harRettighed = 0
	SET @session = NULL

	IF 0 = @adminOption AND @brugerGuid IS NOT NULL
	BEGIN
		SET @harRettighed = (	SELECT  ISNull(MAX(RE.RETTIGHEDER),0)
					FROM 	EBAS_SIKKERHED_BRUGER B, EBAS_SIKKERHED_RELATION R,
						EBAS_SIKKERHED_GRUPPE G, EBAS_SIKKERHED_OBJEKT_TYPE T,
						EBAS_SIKKERHED_RETTIGHEDER RE
					WHERE 	B.GUID = R.SIKKERHED_BRUGER_GUID
					AND 	R.SIKKERHED_GRUPPE_GUID = G.GUID
					AND 	G.GUID = RE.SIKKERHED_GRUPPE_GUID
					AND 	RE.SIKKERHED_OBJEKT_TYPE_GUID = T.GUID
					AND 	(T.NAVN = 'EBASWeb')
					AND 	B.GUID = @brugerGuid )
					
		SET @objektType = (SELECT GUID FROM EBAS_SIKKERHED_OBJEKT_TYPE WHERE NAVN = 'EBASWeb')
	END
	ELSE IF @brugerGuid IS NOT NULL
	BEGIN
		SET @harRettighed = (	SELECT 	ISNull(MAX(RE.RETTIGHEDER),0)
					FROM 	EBAS_SIKKERHED_BRUGER B, EBAS_SIKKERHED_RELATION R,
						EBAS_SIKKERHED_GRUPPE G, EBAS_SIKKERHED_OBJEKT_TYPE T,
						EBAS_SIKKERHED_RETTIGHEDER RE
					WHERE 	B.GUID = R.SIKKERHED_BRUGER_GUID
					AND 	R.SIKKERHED_GRUPPE_GUID = G.GUID
					AND 	G.GUID = RE.SIKKERHED_GRUPPE_GUID
					AND 	RE.SIKKERHED_OBJEKT_TYPE_GUID = T.GUID
					AND 	(T.NAVN = 'EBASTool')
					AND 	B.GUID = @brugerGuid )	

		SET @objektType = (SELECT GUID FROM EBAS_SIKKERHED_OBJEKT_TYPE WHERE NAVN = 'EBASTool')
	END
	
	IF 0 < @harRettighed 
	BEGIN			
		SET @internSession = NEWID()	
		INSERT INTO EBAS_SIKKERHED_SESSION (GUID, SIKKERHED_BRUGER_GUID, SIKKERHED_OBJEKT_TYPE_GUID, DEAKTIVERET)
		VALUES (@internSession, @brugerGuid, @objektType, 0)		
	END
	ELSE
		SET @internSession = NULL

	IF @internSession IS NOT NULL
	BEGIN
		SET @session = (SELECT CAST ( @internSession AS VARCHAR(255) ) )
		SELECT GUID, @session AS SESSION, ADGANGSKODE_HASH
		FROM EBAS_SIKKERHED_BRUGER B
		WHERE B.GUID = @brugerGuid
	END
	ELSE
	BEGIN
		SELECT '' AS GUID, '' AS SESSION, '' AS ADGANGSKODE_HASH
	END
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

